import mountElement from "./mountElement"
import unmountNode from "./unmountNode"
import updateComponent from "./updateComponent"

// 比对组件的方法
export default function diffComponent(vDom, oldComponent, oldDom, container) {
  // 如果旧组件和新组件是相同组件
  if (isSameComponent(vDom, oldComponent)) {
    updateComponent(vDom, oldComponent, oldDom, container)
  }
  // 如果新旧组件不同，直接渲染新组件，替换原先的内容
  else {
    mountElement(vDom, container, oldDom)
  }
}

function isSameComponent(vDom, oldComponent) {
  // 判断是否是相同组件
  return oldComponent && vDom.type === oldComponent.constructor
}